NAND flash memory, as well as other types of non-volatile memories (“NVMs”), are commonly used for mass storage. For example, consumer electronics such as portable media players or cellular telephones often include raw flash memory or a flash card to store music, videos, and other media.
With the continuing demand for higher-capacity, but smaller-sized non-volatile memory devices, the storage density in such non-volatile memories have been increasing. For example, non-volatile memories have been developed that include memory cells that can each store multiple bits of information. Such memory cells are typically referred to as “multi-level cells” (“MLC”), while memory cells that can each store one bit of information are typically referred to as “single-level cells” (“SLC”). A memory cell may be formed from a transistor with a floating gate, and data may be stored in a single-level cell by selectively storing charge in the floating gate. This way, the threshold voltage of the transistor may be altered. Data may be stored in a multi-level cell, on the other hand, by storing different amounts of charge in the floating gate.
Memory cells, whether MLC or SLC, may suffer from error-causing phenomena, such as read disturb and leakage effects, which can affect the device's bit error rate (“BER”). Multi-level cells may be more susceptible to such error-causing phenomena because of the increased resolution needed to store a greater amount of data per memory cell. To maintain high data integrity, error correcting and detecting codes may be applied to data that is stored in non-volatile memories.